二叉树前序,中序,后序遍历迭代实现详解

二叉树的遍历迭代实现

在上一篇文章中实现了二叉树,但是对于遍历仅仅是简单的用递归来进行了实现。在这篇文章中将给出迭代的实现版本以及分析过程。

首先给出我们要分析的二叉树实例:

前序遍历迭代版本的分析及实现:

根据上面给出的二叉树进行前序遍历的分析,很容易得到正确的遍历顺序:

A B D H I E J N O K C F G L M

回顾我们手动得到前序遍历时的想法,我将遍历的过程分为几个步骤来阐述:

1.首先得到的是根节点,而后关注根节点的左子树,而后再关注左子树根节点的左子树......直到最终的某一个节点左子树不存在,在图中第一个左子树不存在的节点为H,不难发现,我们是一直沿着左子树下行的。

2.而后我们将进行回溯,找到最后一个遍历的,且右子树存在的节点。在图中,第一个这样的节点是D。

3.接下来对步骤2中所找到的节点进行步骤1的操作。


从上述的分析可以看出针对二叉树的前序遍历无非就是针对各个左子树根节点的遍历,如下图:

对以A为根的树进行A B D H的左侧遍历,对以I为根的子树进行I(因为子树中只有一个元素)的左侧遍历,其他节点同理。针对上述逻辑我们可以抽象出一个遍历规则,如下图所示:

<

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值